import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.*;

public class GuessNumberTest {

    GuessNumber gn;

    @Before
    public void setUp() throws Exception
    {
        gn = new GuessNumber();
        // 这样, 在每一测试的时候都会自动新实例化一个GuessNumber变量
    }

    @After
    public void tearDown() throws Exception {
    }

    @Test
    public void generateAnswers()
    {
        // assertEquals() --> 用于实际结果固定的情况下, 而这次随机生成元素返回一个数组就不可以用这个了
        // 所以需要自己在这个测试类中设计一个方法: 可以判断原方法返回的数组元素int[0, 9], 不能重复

        assertTrue(isValidAnswer(10));
    }


    public boolean isValidAnswer(int HowManyYouWantToTest)
    {
        int[] t_answers = gn.generateAnswers();

        for (int i = 0; i < HowManyYouWantToTest; i++)
        {
            for (int j = 0; j < t_answers.length; j++)
            {
                if (t_answers[j] < 0 || t_answers[j] > 9)
                {
                    return false;
                }
            }
        }

        for (int j = 0; j < 4; j++)
        {
            for (int k = j + 1; k < 4; k++)
            {
                if (t_answers[j] == t_answers[k])
                {
                    return false;
                }
            }
        }
        return true;
    }

}